/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package controllers;
import play.*;
import play.mvc.*;
import views.html.sorteos.*;
import play.data.*;
import static play.data.Form.*;
import play.db.jpa.*;
import views.html.sorteos.*;
import models.*;

public class Sorteos extends Controller {
    
   public static Result GO_HOME_SORTEOS = redirect(
        routes.Sorteos.listSorteo(0,"nomSorteo","asc","")
    );    

    public static Result blank() {
        return GO_HOME_SORTEOS;
    }
    
    @Transactional(readOnly=true)
    public static Result newSorteo() {
        Form<Sorteo> sorteoForm = form(Sorteo.class);
        return ok(createFormSorteo.render(sorteoForm));
    }
    
    @Transactional(readOnly=true)
    public static Result newPremio(int codSorteo) {
        Form<Premios> premioForm = form(Premios.class);
        return ok(createFormPremio.render(premioForm,codSorteo));
    }  
    
    
    @Transactional(readOnly=true)
    public static Result newParticipante(int codSorteo) {
        Form<Participante> participanteForm = form(Participante.class);
        return ok(createFormParticipante.render(participanteForm,codSorteo,Persona.page()));
    }  

    @Transactional(readOnly=true)
   public static Result listSorteo(int page, String sortBy, String order, String filter) {
       return ok(
               list.render(
                   Sorteo.page(page, 10, sortBy, order, filter),
                   sortBy, order, filter
               )
       );
   }
    @Transactional(readOnly=true)
   public static Result listPremios(int page, String sortBy, String order, int codSorteo) {
       return ok(
               listPremios.render(
                   Premios.page(page, 10, sortBy, order, codSorteo),
                   sortBy, order, codSorteo
               )
       );
   }
 
    @Transactional(readOnly=true)
    public static Result listParticipantes(int codSorteo) {
       return ok(
               listParticipantes.render(
                   Participante.page(codSorteo),codSorteo
               )
       );
   }

    @Transactional
    public static Result save() {
        Form<Sorteo> sorteoForm = form(Sorteo.class).bindFromRequest();

        System.out.println("FORMULARIO de SORTEO: " + sorteoForm);
        
        
        if(sorteoForm.hasErrors()) {
            return badRequest(createFormSorteo.render(sorteoForm));
        }

        sorteoForm.get().estado = "Creado";
        sorteoForm.get().save();
        flash("success", sorteoForm.get().nomSorteo + " ha sido creado.");
       // return ok(listSorteo.render(0,"nomSorteo","asc",""));
        return ok(list.render(
                   Sorteo.page(0, 10, "nomSorteo", "asc",""),
                    "nomSorteo", "asc",""
               ));
    }
    
     @Transactional
    public static Result savePremio(int codSorteo) {
        Form<Premios> premioForm = form(Premios.class).bindFromRequest();

        System.out.println("CS "+codSorteo+ " FORMULARIO de PREMIO: " + premioForm);
        if(premioForm.hasErrors()) {
            return badRequest(createFormPremio.render(premioForm,codSorteo));
        }
        //premioForm.get().codSorteo=codSorteo;
        premioForm.get().save();
        flash("success", "Premio " + premioForm.get().descPremio + " ha sido creado.");       
        return ok(listPremios.render(
                   Premios.page(0, 10, "descPremio","asc", codSorteo),
                   "descPremio","asc", codSorteo
               ));
    }
    
    @Transactional
    public static Result saveParticipante() {
        Form<Participante> participanteForm = form(Participante.class).bindFromRequest();
        
        int codSorteo=participanteForm.get().sorteo.codSorteo;
        System.out.println("CS "+codSorteo+ " FORMULARIO de PARTICIPANTE: " + participanteForm);
        if(participanteForm.hasErrors()) {
            return badRequest(createFormParticipante.render(participanteForm,codSorteo,Persona.page()));
        }
        
        participanteForm.get().save();
        flash("success", "Participante " + participanteForm.get().numParticipante + " ha sido creado.");
        return ok(listParticipantes.render(Participante.page(codSorteo),codSorteo));
    }
}